<?php
require_once 'vendor/autoload.php';

/*
 * 注意事项
 * 请先将必要文件夹cache权限修改为777
 * 请先将配置文件./config.php按照自己的实际情况调整(此开发包使用本人申请的微信公众平台测试号的appid)
 * 项目还在开发阶段，如遇问题请联系我
 **/
//导入Wechat类，完成微信开发
use wechat\lib\Wechat;

//实例化对象
$wechat = new Wechat();

//接口配置服务器验证方法。一般只需用到一次
# $wechat->checkSignature();

//获取微信全局access_token，公众号给类接口调用时所用的access_token
# $global_access_token = $wechat->getGlobalAccessToken();

//微信网页授权获取用户信息,参数 $redirect_uri:回调路径填写完整的带有'http://'或'https://'路径，不填代表跳回原地址
# $userInfo = $wechat->getUserInfo();
//单独获取用户openid，此获取不跳转用户授权界面，静默授权,参数1 redirect_uri:回调路径填写完整的带有'http://'或'https://'路径，不填代表跳回原地址
# $openid = $wechat->getOpenId($redirect_uri);

//设置公众号菜单,方法形参$data强制数组，返回bool型。菜单设置方式请遵从微信自定义菜单规则
/*
    $data = [
         "button"=>[
             [
                 "name"         =>"按钮一",
                 "type"         =>"view",
                 "url"          =>"http://www.baidu.com",
             ],
             [
                 "name"         =>"按钮二",
                 "sub_button"   =>[
                     [
                         "name"         =>"二级菜单1",
                         "type"         =>"view",
                         "url"          =>"http://www.baidu.com"
                     ]
                 ]
             ]
         ]
    ];
*/
# $setMenu = $wechat->menu->setMenu($data);

//获取当前自定义菜单设置
# $getMenu = $wechat->menu->getMenuInfo();

//删除自定义菜单
# $delMenu = $wechat->menu->delMenu();

//设置个性化菜单，$data菜单设置样式，$matchrule个性化菜单匹配规则，返回bool型，详情微信手册
/*
    $data = [
        "button"=>[
            [
                "name"         =>"按钮一",
                "type"         =>"view",
                "url"          =>"http://www.baidu.com",
            ],
            [
                "name"         =>"按钮二",
                "sub_button"   =>[
                    [
                        "name"         =>"二级菜单1",
                        "type"         =>"view",
                        "url"          =>"http://www.baidu.com"
                    ]
                ]
            ]
        ],
    ];
    $matchrule = [
        "matchrule"=>[
            "tag_id"=> "2",
            "sex"=> "1",
            "country"=> "中国",
            "province"=> "广东",
            "city"=> "广州",
            "client_platform_type"=> "2",
            "language"=> "zh_CN"
        ]
    ];
*/
# $setMenuConditional = $wechat->menu->setMenuConditional($data,$matchrule);

//获取个性化菜单设置
# $getMenuConditionalInfo = $wechat->menu->getMenuConditionalInfo();

//接收用户发来的消息，返回数组类型数据,数据内容见微信开发文档
# $msg = $wechat->getMsg();

//被动回复文本消息,参数1:接收方openid  参数2:开发者openid  参数3:发送内容,以下使用接收来的数据
# $sendText = $wechat->sendText($msg['FromUserName'],$msg['ToUserName'],'您发送的内容是:'.$msg['Content']);

//被动回复图片消息,参数1:接收方openid  参数2:开发者openid  参数3:上传的图片素材id
# $sendImg = $wechat->sendImg($toUserName,$fromUserName,$mediaId);

//被动回复语音消息,参数1:接收方openid  参数2:开发者openid  参数3:上传的语音素材id
# $sendVoice = $wechat->sendVoice($toUserName,$fromUserName,$mediaId);

//被动回复视频消息,参数1:接收方openid  参数2:开发者openid  参数3:数组(格式见下方参考)
/*
    $content = [
        'title'     => '123', //标题
        'desc'      => '123', //描述
        'mediaId'   => 'fst_F_4QO9ofnptaL0x2GcC45o5vD8NAuZFpHTaOC8Q', //上传的素材ID
    ];

    $sendVideo = $wechat->sendVideo($toUserName,$fromUserName,$content);
*/

//被动回复音乐消息,参数1:接收方openid  参数2:开发者openid  参数3:数组(格式见下方参考)
/*
    $content = [
        'title'         => '', //标题
        'desc'          => '', //描述
        'url'           => '', //音乐链接
        'Hurl'          => '', //高品质音乐链接,WIFI状态下默认播放这个
        'thumbMediaId'  => '', //消息缩略图,上传的图片素材ID
    ];
*/
# $sendMusic = $wechat->sendMusic($toUserName,$fromUserName,$content);

//被动回复图文消息,参数1:接收方openid  参数2:开发者openid  参数3:数组(格式见下方参考)
/*
    $articles = [
        '第一篇' => [
            'title'     => '', //标题
            'desc'      => '', //描述
            'picurl'    => '', //缩略图url
            'url'       => '', //点击跳转页面url
        ],
        '第二篇' => [],
        '第三篇' => [],
        ... //一次性最多发送8篇，数量限制详情见微信开发文档
    ];
*/
# $sendNews = $wechat->sendNews($toUserName,$fromUserName,$articles);

/*
    素材上传提示
    图片（image）: 2M，支持PNG\JPEG\JPG\GIF格式
    语音（voice）：2M，播放长度不超过60s，支持AMR\MP3格式
    视频（video）：10MB，支持MP4格式
    缩略图（thumb）：64KB，支持JPG格式
 */

//上传图片临时素材文件,参数1:文件路径。返回json格式字符串数据内容见微信开发手册
# $tempMedia = $wechat->media->addImgTempMedia($file);

//上传语音临时素材文件,参数1:文件路径。返回json格式字符串数据内容见微信开发手册
# $tempMedia = $wechat->media->addVoiceTempMedia($filepath);

//上传视频临时素材文件,参数1:文件路径。返回json格式字符串数据内容见微信开发手册
# $tempMedia = $wechat->media->addVideoTempMedia($filepath);

//上传缩略图临时素材文件,参数1:文件路径。返回json格式字符串数据内容见微信开发手册
# $tempMedia = $wechat->media->addThumbTempMedia($filepath);

//获取临时素材,参数1:素材media_id  图片素材返回图片文件流字符串  视频素材返回json格式字符串包含视频url地址。以下示例将获取的图片素材文件流保存为本地文件
/*
    $getTempMedia = $wechat->media->getTempMedia('l8rZYFMXbq7Obkdy91sHWrHsuooLmLuFNp2L4FytUpQspGTVFZp6wyv3vYRglhMF');//'sbLQ9VGIMCXHY_EYhH0hcESjvy9brQTnFk-MsQHOjzWmWE8e0Hi269DYmK_bSiMR'

    $file = fopen('test.jpg','w+');
    fwrite($file,$getTempMedia);
    fclose($file);
*/

//获取jssdk上传的高清语音
# $getJssdkMedia = $wechat->media->getJssdkMedia($media_id)

//上传图片永久素材
# $addImgMaterial = $wechat->media->addImgMaterial($file);//fst_F_4QO9ofnptaL0x2GWMdW0kLMRT9ALXoIO1xXGU
//上传语音永久素材
# $addVoiceMaterial = $wechat->media->addVoiceMaterial($file);

//上传永久视频素材，参数1:文件路径  参数2:视频标题  参数3:视频描述
# $addVideoMaterial = $wechat->media->addVideoMaterial($file,$title,$introduction);//fst_F_4QO9ofnptaL0x2GcC45o5vD8NAuZFpHTaOC8Q

//上传永久缩略图素材
# $addThumbMaterial = $wechat->media->addThumbMaterial($file);

//上传图文永久素材，参数1:图文内容数组，返回素材media_id
/*
$articles = [
    [
        "title"             =>      'TITLE',                //标题
        "thumb_media_id"    =>      'THUMB_MEDIA_ID',       //图文消息的封面图片素材id（必须是永久mediaID）
        "author"            =>      'AUTHOR',               //作者
        "digest"            =>      'DIGEST',               //图文消息的摘要，仅有单图文消息才有摘要，多图文此处为空。如果本字段为没有填写，则默认抓取正文前64个字。
        "show_cover_pic"    =>      'SHOW_COVER_PIC(0 / 1)',//是否显示封面，0为false，即不显示，1为true，即显示
        "content"           =>      'CONTENT',              //图文消息的具体内容，支持HTML标签，必须少于2万字符，小于1M，且此处会去除JS,涉及图片url必须来源 "上传图文消息内的图片获取URL"接口获取。外部图片url将被过滤。
        "content_source_url"=>      'CONTENT_SOURCE_URL',   //图文消息的原文地址，即点击“阅读原文”后的URL
        "need_open_comment" =>      '1',                    //Uint32 是否打开评论，0不打开，1打开
        "only_fans_can_comment"=>   '1'                     //Uint32 是否粉丝才可评论，0所有人可评论，1粉丝才可评论
    ],
    [
        //...
    ],
    //最多八篇
];
*/
# $addArticleMaterial = $wechat->media->addArticleMaterial($articles);

//上传图文消息内的图片,返回图片url(图片仅支持jpg/png格式，大小必须在1MB以下)
# $addArticleImgMaterial = $wechat->media->addArticleImgMaterial($file);

//获取永久素材,参数1:素材media_ia,返回 图文素材视频素材为json数据，其他则为文件二进制文件内容
# $getMaterial = $wechat->media->getMaterial($meida_id);

//获取素材总数,返回json数据类型
# $getMaterialCount = $wechat->media->getMaterialCount();

//获取素材列表,参数1:查询素材类型图片（image）、视频（video）、语音（voice）、图文（news），参数2:从全部素材的该偏移位置开始返回，0表示从第一个素材返回，默认0，参数3:返回素材的数量，取值在1到20之间，默认20。返回json数据
# $getMaterialList = $wechat->media->getMaterialList($type, $offset, $count);

//删除永久素材
# $delMaterial = $wechat->media->delMaterial($media_id);

//创建用户标签,参数1:标签名
# $tag = $wechat->user->createTag($name);

//获取已创建的标签
# $tagList = $wechat->user->tagList();

//修改标签名称,参数1:要修改的标签ID,参数2:修改后的标签名称
# $upTag = $wechat->user->upTag($id,$name);

//删除标签,参数1:标签ID
# $delTag = $wechat->user->delTag($id);

//获取标签下粉丝列表,参数1:标签ID,参数2:第一个拉取的OPENID，不填默认从头开始拉取
# $tagUserList = $wechat->user->tagUserList($id,$offset);

//批量为用户打标签,参数1:openid数组,参数2:标签ID
/*
 $openid_list=[
     //粉丝列表
     "ocYxcuAEy30bX0NXmGn4ypqx3tI0",
     "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"
 ];
 $tagUser = $wechat->user->tagUser($openid_list,$id);
*/

//批量为用户取消标签,参数1:openid数组,参数2:标签ID
/*
 $openid_list=[
     //粉丝列表
     "ocYxcuAEy30bX0NXmGn4ypqx3tI0",
     "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"
 ];
 $tagUserDel = $wechat->user->tagUserDel($openid_list,$id);
*/

//获取用户身上的标签列表,参数1:openid
# $userTag = $wechat->user->userTag($openid);

//指定用户设置备注名,参数1:openid,参数2:备注名
# $userRemark = $wechat->user->userRemark($openid,$remark);

//获取用户基本信息(UnionID机制),参数1:openid,参数2:国家地区语言版本，zh_CN 简体，zh_TW 繁体，en 英语(不填默认简中)
# $userBasicInfo = $wechat->user->userBasicInfo($openid,$language);

//获取公众号的关注者列表,参数1:第一个拉取的OPENID，不填默认从头开始拉取
# $getUserList = $wechat->user->getUserList($next_openid);

//获取公众号的黑名单列表
# $getBlackList = $wechat->user->getBlackList();

//拉黑用户,参数1:需要拉入黑名单的用户的openid，一次拉黑最多允许20个
/*
 $openid_list=[
     //粉丝列表
     "ocYxcuAEy30bX0NXmGn4ypqx3tI0",
     "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"
 ];
 $setBlackList = $wechat->user->setBlackList($openid_list);
*/

//取消拉黑用户,参数1:需要拉入黑名单的用户的openid，一次拉黑最多允许20个
/*
 $openid_list=[
     //粉丝列表
     "ocYxcuAEy30bX0NXmGn4ypqx3tI0",
     "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"
 ];
 $delBlackList = $wechat->user->delBlackList($openid_list);
*/

